System and method for controlled market data delivery in an electronic trading environment

ABSTRACT

A system and methods for controlled market data delivery are described. According to one example embodiment, upon detecting a preset threshold of updates in a queue at a gateway, a predetermined number of market updates may be processed before any data is sent to a client terminal. According to one method, update types may be used to control how many updates are processed before any data is sent. Also, once the number of updates to be processed is set, a market update having a higher priority update type may be used to trigger a change in the number of market updates that was set for processing.

TECHNICAL FIELD

The present invention is directed towards electronic trading. Morespecifically, the present invention is directed to tools for controlleddata delivery in an electronic trading environment.

BACKGROUND

Trading methods have evolved from a manually intensive process to atechnology enabled, electronic platform. With the advent of electronictrading, a user or trader can be in virtually direct contact with themarket, from practically anywhere in the world, performing nearreal-time transactions.

Subscribing traders are connected to an exchange's electronic tradingplatform by way of a communication link and through an applicationprogram interface to facilitate real-time electronic messaging betweenthemselves and the exchanges. The electronic trading platform includesat least one electronic market, which is at the center of the tradingsystem and handles the matching of bids and offers placed by the tradersfor that market. The electronic messaging includes market informationthat is distributed from the electronic market to the traders via anelectronic data feed. Once the traders receive the market information,it may be displayed to them on their trading screens. Upon viewing theinformation, traders can take certain actions including the actions ofsending buy or sell orders to the electronic market, adjusting existingorders, deleting orders, or otherwise managing orders. Traders may alsouse software tools on their client devices to automate these andadditional actions.

Although the types of market information published by an electronicexchange often differ from market to market, there are generally somestandard pieces of information. Market information may include data thatrepresents just the inside market. The inside market is the lowestavailable ask price (best ask) and the highest available bid price (bestbid) in the market for a particular tradeable object at a particularpoint in time. Market information may also include market depth. Marketdepth refers to quantities available at the inside market and may alsorefer to quantities available at other prices away from the insidemarket. The quantity available at a given price level is usuallyprovided by the exchange in aggregate sums. In other words, an exchangeusually provides the total buy quantity and the total sell quantityavailable in the market at a particular price level in its data feed. Inaddition to providing order book information, such as price and quantityinformation, electronic exchanges can offer other types of marketinformation such as the open price, settlement price, net change,volume, last traded price, the last traded quantity, and order fillinformation.

The extent of market depth available for a trader usually depends on theexchange. For instance, some exchanges provide market depth for all (ormost) price levels, and others may provide no market depth at all.Electronic exchanges may also limit the market depth offered as marketinformation can become intensive for network and client devices toprocess. For instance, an electronic market might offer only five levelsof market depth, which includes the quantities available at the currenttop five buy prices and the quantities available at the current top fivesell prices.

Regardless of the extent of data provided by an exchange, theintermediary devices, such as gateways, may become unable to handle themassive processing load and, at least during those times, they cannotmaintain near real-time processing. The processing requirements mayfurther increase when a gateway receives data feeds for multipletradeable objects or at times of high market activity when a gateway isbombarded with a large number of messages for even a single tradeableobject. As more traders begin trading in the electronic tradingenvironment, the load on the intermediary devices is expected toincrease even further.

Electronic exchanges and/or distributors of market information oftenstruggle to balance the message processing load and the timeliness ofmarket information messages to deliver fast response market data feeds.Most often, traders want access to as much of the information as fast aspossible so that they can make more efficient and more effective trades.One example system that assists in processing data at intermediarydevices has been described in the co-pending, commonly assigned, patentapplication Ser. No. 11/551,567, entitled “System and Method forPrioritized Data Delivery in an Electronic Trading Environment,” filedon Oct. 20, 2006. According to one example embodiment in that system,different types of information in a data feed can be associated withdifferent priority levels, and market data associated with a lowerpriority level can be temporarily stored in a queue, while market datawith a higher priority level is sent to a client device.

BRIEF DESCRIPTION OF THE DRAWINGS

Example embodiments are described herein with reference to the followingdrawings, in which:

FIG. 1 illustrates an example electronic trading system in which theexample embodiments may be employed in relation to a single exchange;

FIG. 2 illustrates another example trading system that uses similarcomputer elements as shown in FIG. 1, in which, the example embodimentsmay be employed in relation to multiple electronic exchanges;

FIG. 3 is a block diagram illustrating a data priority controlapplication that could be used at a gateway to provide prioritizedtype-based data delivery;

FIGS. 4A and 4B illustrate a flow diagram of a method for providingcontrolled market data delivery according to an example embodiment;

FIG. 5 is a block diagram illustrating an example operation of thesystem for controlled market data delivery for an input streamcorresponding to a single tradeable object;

FIG. 6 is a block diagram illustrating an example operation of thesystem for controlled market data delivery when two input streams arereceived at a gateway; and

FIG. 7 is a block diagram illustrating an example operation of thesystem for controlled market data delivery when two input streams arereceived at a gateway and where the gateway runs out of updates to beprocessed in a queue.

SUMMARY

Systems that assign priority levels to different market data types andeither send or temporarily store market updates based on the assignedpriority levels, such as the one described in the co-pending, commonlyassigned, patent application Ser. No. 11/551,567, entitled “System andMethod for Prioritized Data Delivery in an Electronic TradingEnvironment,” may be beneficial in certain environments. However, suchsystems may result in delays and bottleneck at times of high marketactivity when many high priority messages are received at anintermediary device. Thus, it would be beneficial to provide anothersystem that would deliver market data with fewer delay limitations.

According to one example embodiment described herein, an example methodfor controlled market data delivery is provided. According to oneexample method, a plurality of market updates is received at a networkdevice from an electronic exchange that includes a computerized matchingengine for automatically matching electronic bids and offers receivedfrom a plurality of trading stations for a tradeable object. Thereceived market updates include market information related to thetradeable object such as an inside market related data, a trade relateddata, or market depth data. When the plurality of market updates arereceived at the intermediary device, they may be placed in a queue andprocessed based on the number of each update in the queue. According toone example method, when the first update in the plurality of updates isprocessed, an update type is determined based on the type of marketinformation in the first update. Upon determining the update type of thefirst update, a first number of market updates is dynamically set forprocessing in the queue before any market updates are sent from thenetwork device to the receiving trading stations. As the first number ofmarket updates are processed, market data in the processed updates iscoalesced so that the most up to date information is provided to thetrading stations. Upon processing the first number of updates, thecoalesced data may be sent to the client terminals. As will be describedin greater detail below, the first number of updates preset forprocessing can be dynamically modified based on another update type,such as an update comprising higher priority data, that is detectedwithin the first set of updates that are processed. According to oneexample embodiment, the higher priority update type can either increaseor decrease the number of updates that are processed before anycoalesced data is sent to the client terminals.

DETAILED DESCRIPTION

I. A First Example Trading System

FIG. 1 illustrates an example electronic trading system in which theexample embodiments may be employed. In this example, the systemcomprises a trading station 102 that accesses an electronic exchange 104through a gateway 106. Router 108 is used to route messages between thegateway 106 and the electronic exchange 104. The electronic exchange 104includes a computer process (e.g., the central computer) that matchesbuy and sell orders sent from the trading station 102 with orders fromother trading stations (not shown). The electronic exchange 104 may listone or more tradeable objects for trading. While not shown in FIG. 1 forthe sake of clarity, the trading system may include other devices thatare specific to the client site like middleware and security measureslike firewalls, hubs, security managers, and so on, as understood by aperson skilled in the art.

Regardless of the types of order execution algorithms used, theelectronic exchange 104 provides market information to the subscribingtrading station 102. Market information may include data that representsjust the inside market. The inside market is the lowest sell price (bestask) and the highest buy price (best bid) at a particular point in time.Market information may also include market depth. Additionally, theexchange 104 can offer other types of market information such as thelast traded price (LTP), the last traded quantity (LTQ), and order fillinformation.

The computer employed as the trading station 102 generally can rangefrom a hand-held device, laptop, or personal computer to a largercomputer such as a workstation and multiprocessor. An illustrativepersonal computer may use PENTIUM® microprocessors and may operate undera WINDOWS® operating system, or yet may use some other microprocessor oroperating system. Generally, the trading station 102 includes a monitor(or any other output device) and an input device, such as a keyboardand/or a two or three-button mouse to support click based trading, if sodesired. One skilled in the art of computer systems will understand thatthe present example embodiments are not limited to any particular classor model of computer employed for the trading station 102 and will beable to select an appropriate system.

In one example embodiment, the trading station 102 uses software tocreate specialized interactive trading screens on terminals associatedwith them. Trading screens preferably enable traders to, among otherthings, enter and execute orders, obtain market quotes, and monitorpositions. The range and quality of features available to the trader onhis or her trading screen may vary according to the specific softwareapplication being run. In addition to or in place of the interactivetrading screens, a trading station could run automated types of tradingapplications.

The example embodiment may be implemented in relation to any type oftrading screen, therefore, details regarding the trading screen are notnecessary to understand the present invention. However, in oneembodiment, one type of trading screen that can be used is provided by acommercially available trading application referred to as X_TRADER® fromTrading Technologies International, Inc. of Chicago, Ill. X_TRADER® alsoprovides an electronic trading interface, referred to as MD Trader™, inwhich working orders and/or bid and ask quantities are displayed inassociation with a static price axis or scale.

Portions of the X_TRADER® and the MD_Trader®-style display are describedin U.S. Pat. No. 6,772,132, entitled “Click Based Trading With IntuitiveGrid Display of Market Depth,” filed on Jun. 9, 2000, U.S. Pat. No.6,938,011, entitled “Click Based Trading with Market Depth Display”filed on Jun. 9, 2000, U.S. Pat. No. 7,127,424 entitled “Click BasedTrading With Intuitive Grid Display of Market Depth and PriceConsolidation,” filed on Oct. 5, 2001, U.S. patent application Ser. No.10/125,894, entitled “Trading Tools For Electronic Trading,” filed onApr. 19, 2002, which issued as U.S. Pat. No. 7,389,268 on Jun. 17, 2008;and U.S. patent application Ser. No. 10/376,417, entitled “A System andMethod for Trading and Displaying Market Information in an ElectronicTrading Environment,” filed on Feb. 28, 2003, which issued as U.S. Pat.No. 7,228,289 on Jun. 5, 2007, the contents of each are incorporatedherein by reference. However, it should be understood that orders in thesystem illustrated in FIGS. 1 and 2 could also be placed using any othertrading application as well. Additionally, the preferred embodiments arenot limited to any particular product that performs translation,storage, and display function.

The computer employed as the gateway 106 generally can range from apersonal computer to a larger or faster computer. An illustrativegateway computer may use PENTIUM® microprocessors and may operate undera WINDOWS® (server or workstation) operating system, or yet some othersystem. Generally, the gateway 106 may additionally include a monitor(or any other output device), input device, and access to a database, ifso desired. One skilled in the art of computer systems will alsounderstand that the present example embodiments are not limited to anyparticular class or model of computer(s) employed for the gateway 106and will be able to select an appropriate system.

It should be noted that a computer system that may be employed here as atrading station or a gateway generally includes a central processingunit, a memory (a primary and/or secondary memory unit), an inputinterface for receiving data from a communications network, an inputinterface for receiving input signals from one or more input devices(for example, a keyboard, mouse, etc.), and an output interface forcommunications with an output device (for example, a monitor). A systembus or an equivalent system may provide communications between thesevarious elements.

Memory on either the gateway 106 or the trading station 102 may includea computer readable medium. The term computer readable medium, as usedherein, refers to any medium that participates in providing instructionsto a processor unit for execution. Such a medium may take many forms,including but not limited to, non-volatile media, and transmissionmedia. Non-volatile media include, for example, optical or magneticdisks, such as storage devices. Volatile media include, for example,dynamic memory, such as main memory or random access memory (“RAM”).Common forms of computer readable media include, for example, floppydisks, flexible disks, hard disks, magnetic tape, punch cards, CD-ROM,or any other physical medium with patterns of holes, a RAM, a PROM, anEPROM, a FLASH-EPROM, and any other memory chip or cartridge, or anyother medium from which a computer can read.

It should also be noted that the trading station 102 generally executesapplication programs resident at the trading station 102 under thecontrol of the operating system of the trading station 102. Also, thegateway 106 executes application programs resident at the gateway 106under the control of the operating system of the gateway 106. In otherembodiments and as understood by a person skilled in the art, thefunction of the application programs at the trading station 102 may beperformed by the gateway 106, and likewise, the function of theapplication programs at the gateway 106 may be performed by the tradingstation 102.

The actual electronic trading system configurations are numerous, and aperson skilled in the art of electronic trading systems would be able toconstruct a suitable network configuration. For the purposes ofillustration, some example configurations are provided to illustratewhere the elements may be physically located and how they might beconnected to form an electronic trading system. These illustrations aremeant to be helpful to the reader, and they are not meant to belimiting. According to one example illustration, the gateway device maybe located at the client site along with the trading station, which isusually remote from the matching process at the electronic exchange.According to this instance, the trading station, the gateway, and therouter may communicate over a local area network, and the router maycommunicate with the matching process at the electronic exchange over aT1, T3, ISDN, or some other high speed connection.

In another example illustration, the client site may be located on theactual grounds of the electronic exchange (for example, in the buildingof the exchange). According to this instance, the trading station, thegateway, and the router may still communicate over a local area network,but the router may communicate with the matching process at theelectronic exchange through another connection means besides a T1, T3,or ISDN. In yet another example illustration, the gateway may be housedat, or near, its corresponding electronic exchange. According to thisinstance, the trading station may communicate with the gateway over awide area network or through the use of a T1, T3, ISDN, or some otherhigh speed connection.

Further, the gateway may be located remote from the trading station andremote from the electronic exchange, which might be particularly usefulin systems that include interconnection of multiple trading networks.Thus, one trading network might have gateway access to an electronicexchange. Then, other trading networks may communicate with the tradingnetwork that has gateway access through a T1, T3, ISDN, or some otherhigh speed connection.

II. A Second Example Trading System

FIG. 2 illustrates another example trading system that uses similarcomputer elements as shown in FIG. 1, in which a trader may access andtrade at multiple electronic exchanges. The system comprises a tradingstation 202 that can access multiple electronic exchanges 204 and 208.In this particular embodiment, electronic exchange 204 is accessedthrough gateway 206 and electronic exchange 208 is accessed throughanother gateway 210. Alternatively, a single gateway may be programmedto handle more than one electronic exchange. Router 212 is used to routemessages between the gateways 206 and 210 and the electronic exchanges204 and 208. While not shown in the figure, the system may include otherdevices that are specific to the client site like middleware andsecurity measures like firewalls, hubs, security managers, and so on, asunderstood by a person skilled in the art. Additional electronicexchanges may be added to the system so that the trader can trade at anynumber of exchanges, if so desired.

The trading system presented in FIG. 2 provides the trader with theopportunity to trade tradeable objects listed at different electronicexchanges. To some traders, there can be many advantages with amulti-exchange environment. For example, a trader could view marketinformation from each tradeable object through one common visualdisplay. As such, price and quantity information from the two separateexchanges may be presented together so that the trader can view bothmarkets simultaneously in the same window. In another example, a tradercan spread-trade different tradeable objects listed at the differentelectronic exchanges.

As indicated earlier, one skilled in the art of electronic tradingsystems will understand that the present embodiments are not limited tothe particular configurations illustrated and described with respect toFIG. 1 and FIG. 2, and will be able to design a particular system basedon the specific requirements (for example, by adding additionalexchanges, gateways, trading stations, routers, or other computersserving various functions like message handling and security).Additionally, several networks, like either of the networks shown inFIG. 1 or FIG. 2, may be linked together to communicatively access oneor more electronic exchanges.

III. Controlled Market Data Delivery

As explained earlier, a gateway may include one more computers thatprocess and send to client terminals market information that is receivedfrom an electronic exchange. A gateway may include one or more dataqueues that can be used to temporarily store market updates that arereceived from an electronic exchange. As the data is placed in thequeue, the gateway may process each update one at a time in the orderthe updates were received at the gateway, and then may send eachprocessed update to a client terminal. The processing of updates mayinvolve changing the format of the updates to one that can be easilyprocessed at client terminals to which the updates are sent. However, asmore market updates are received at the gateway, delays may occurbecause the gateway may not be able to process and send market data asfast as the data is received at the gateway.

Additionally, many inbound markets are often merged into a single feed.In such an environment, when a block containing a plurality of updatesis received at a gateway, the overall time it takes to send all updatesin the received block to a client terminal may be much longer ascompared to the time it took to receive all updates in the block. Forexample, if ‘10’ updates are in the received block of updates, there isno way to push all updates to client terminals in the same time it tookto receive the block of updates, as each update is separately sent tothe client terminal. Also, while the time required to process eachupdate is typically short, often on the order of microseconds, thedelays in sending updates to client terminals are often due to hardwarelimitations, e.g., the time it takes to communicate with a network cardthat allows the processed updates to be sent to client terminals couldbe in the order of milliseconds. Thus, as will be explained in greaterdetail below, the example embodiments are directed to a system andmethods for data delivery that focus on processing a predetermined setof market updates and coalescing the processed data before any updatesare sent to a client terminal. Such a system is especially useful duringperiods of high market activity when the number of market updates placedin a queue at a gateway highly exceeds the processing capabilities ofthe gateway.

More specifically, the example methods allow a system administrator todefine a number of market updates to be processed before any data issent from a gateway to a client terminal during periods of high marketactivity. According to one embodiment that will be used in the examplesbelow, the number of updates to be processed before any data is sentfrom a gateway to a client terminal could be set based on predefinedtrigger points, and the trigger points could be set to different typesof market updates. As will be described in greater detail later, whenone trigger point is in effect, other trigger points could overwrite itto effectively decrease the number of updates to be processed at agateway before any data is sent to a client terminal. The trigger pointscould also take effect only at times of high market activity when theprocessing capacity of a gateway is exceeded by the number of updatesthat are received from an exchange. However, different configurationsare possible as well.

The types of market updates to be used as trigger points may include amarket depth update, an inside market related update, and a tradeinformation update. A market depth update may include prices andquantities away from the inside market. An inside market related updatemay include inside market prices and/or a best bid/ask quantity at theinside market prices. A trade information update may include either alast traded quantity/price for a tradeable object or trade matchinformation, such as private order related information that notifies aspecific trader that a match has occurred for an order that wassubmitted to an electronic exchange. As used herein, a trade matchoccurs when an electronic trading system matches a trader willing to buya defined quantity of a tradeable object at a defined price to anothertrader offering to sell the same tradeable object at the same or betterprice. When a trade match is detected at a gateway, a trade matchmessage may be sent to a specific trader whose order got matched, andthe trade match message may include an order number, an account number,transaction code, time, price, quantity, and a tradeable object forwhich the order was placed. While the described market update types willbe used in relation to the examples below, it should be understood thatthe example embodiments are not limited to the defined update types andcould be used in systems with more, fewer, or different update types.

FIG. 3 is a block diagram illustrating a data priority controlapplication 300 that could be used at a gateway to provide data deliveryaccording to the example embodiments described herein. The data prioritycontrol application 300 includes a configuration component 302, one ormore data queues 304, a coalescing component 306, a counter 308, and aqueue flush scheduler 310, all of which may communicate with each other.The components 302, 304, 306, 308, and 310 may include software and/orhardware elements to perform their functions. However, it should beunderstood that the data priority control application 300 could includemore or fewer components than those shown in FIG. 3. Also, theillustrated components could be combined with other components of aparticular gateway.

The configuration component 302 provides configuration means that allowa system administrator to define desired trigger points and a number ofdata updates to be processed in relation to each trigger point beforethe processed updates are sent to a client terminal. Additionally, theconfiguration component 302 may allow a user to specify an activationparameter that could dynamically control when the example methods forcontrolled data delivery should be activated. As mentioned earlier, thetrigger points could take effect only at times of high market activitywhen the number of updates that are stored in the data queue(s) 304exceeds a predefined threshold related to the processing capacity of agateway. According to one example embodiment, the activation parametercould be based on a number of updates currently pending in the dataqueue(s) 304 and waiting for processing. Alternatively, an average rateat which market updates are received at a gateway could also be used asthe threshold.

It should be understood that the configuration component 302 could usean API (applications programming interface) to allow for configurationof the desired parameters by an administrator. The API could reside on agateway that includes the data priority control application 300 or maybe on a remotely located workstation or interface device, including awired or wireless device.

According to the example embodiments for controlled market datadelivery, as market updates are received at a gateway, they may beplaced in the queue(s) 304. Then, the gateway may process the receivedmarket updates one by one in the order they were placed in the queue(s)304. Rather than sending them to client terminals, the coalescingcomponent 306 may in some circumstances, as described below, coalescethe updates so that when it is time to transmit data to the clientterminal the most up to data information is sent. As defined herein,coalescing involves consolidating multiple market information updateswith other market information updates to create a single update with themost recent information. For example, if there are two updates relatedto the inside market among the updates processed by the gateway, thecoalescing component 306 could combine the two updates to reflect themost current market conditions before any inside market related updateis sent to a client terminal. The coalescing of updates may involvecomparing the two updates and then overwriting data that is no longeraccurate in the first inside market related update with the data in themost recent update.

The counter 308 may be configured to count updates that are received atthe gateway and/or monitor a rate at which the updates are stored in thequeue(s) 304. Additionally, as the trigger points are activated, thequeue flush scheduler 310 may schedule the next time for transmission ofdata from the gateway to the client terminal. As mentioned earlier, atrigger point may set a number of updates to be processed before anydata is transmitted from the gateway. Additionally, the number ofupdates to be processed could dynamically change based on any newlydetected trigger points. If the trigger points are based on marketupdate types, as in the example embodiments below, the new triggerpoints may be detected as each market update is processed in thequeue(s) 304. As the number of updates to be processed is set, thecounter component 308 can monitor the count of the processed update, andwhen the preset count is reached, the coalesced data may be sent to oneor more client terminals.

A. Method Overview

FIGS. 4A and 4B illustrate a flow diagram of a method 400 for providingcontrolled market data delivery according to one example embodiment. Itshould be understood that each block in this flow diagram may representa module, segment, or portion of code, which includes one or moreexecutable instructions for implementing specific logical functions orsteps in the process. Alternate implementations are included within thescope of the example embodiments in which functions may be executed outof order from that shown or discussed, including substantiallyconcurrently or in reverse order, depending on the functionalityinvolved, as would be understood by those reasonably skilled in the artof the present invention.

At step 402, one or more market updates are received from an electronicexchange and are placed in a queue at a gateway. At step 404, a loopcounter in the queue is incremented and the update is processed.According to one example embodiment, a loop counter value may beassigned to the processed update, and the loop counters may be used asreference points for scheduling data transmission times for sending datafrom the gateway to a client terminal. In such an embodiment, when thescheduled loop counter value is reached, the processed data may be sentto the client terminal. As mentioned earlier, processing an update atthe gateway may involve changing the format of the update to that beingused at the client terminal. Additionally, the new update may becoalesced with other corresponding data, e.g., a new inside marketupdate may be coalesced with a previously stored inside market update sothat when it is time to sent the updates to the client terminal only themost recent data is sent.

At step 406, it is determined if a data flush has been scheduled basedon the previously received data. According to one example embodiment,the scheduling may be based on trigger points, i.e., market update typesthat are received from an electronic exchange. The market update typesmay be prioritized based on the importance of each update type to atrader, and the market update types with the highest priority may beused to schedule the shortest counter intervals compared to those thatare typically of the lesser importance to a trader. For example, whenthe example embodiments for prioritized data delivery are activated, amarket update containing a depth update may trigger a queue flush to bescheduled after 20 consecutive update counts, or in other words, after20 updates are processed. Then, an update with an inside market may beassociated with 10 counts, and an update that includes trade relateddata may be set to 5 counts. As mentioned earlier, queue flushes couldalso be based on different types of information as well. If no queueflush has been scheduled, the method continues at step 410.

At step 408, if the queue flush has been already scheduled, it isdetermined if it should be modified based on the newest market updatethat was just processed. The scheduled data flush may be modified uponreceiving an update with a higher priority level. For example, if theinitial data flush was based on a depth update, and thus was set to 20counts, and the next update that is processed is an inside marketupdate, the scheduled flush may be modified to now correspond to 10counts. According to one example embodiment, the received update mayonly reduce the count associated with the scheduled flush. For example,when the flush is scheduled based on an inside market update and then amarket depth update is processed, the flush scheduled based on theinside market update will control. However, if a market updatecorresponding to trade data is processed once the flush is set based onthe inside market update, the new flush set based on the trade updatemay control even if it means increasing the time period until the nextflush. Such an embodiment may be especially useful when it is importantto send as few packets as possible. Alternatively, in such anembodiment, if the flush set by the inside market update is to occursooner than a flush to be set based on a later received trade relatedupdate, the flush scheduled based on the inside marker could control.Specific examples illustrating example embodiments for selecting thecontrolling flush will be described in greater detail below. If nochange in the scheduled flush is required, the method 400 continues at412.

If there is no flush scheduled, or the scheduled flush is to be changed,the new flush is scheduled, as shown at 410. As mentioned earlier, theflush may be scheduled by setting the update counter to a specificvalue. At step 412, it is determined if the number of outstandingupdates pending in the queue in addition to the current update isgreater than zero. While zero is used in this example embodiment, itshould be understood that different values could also be used as well.According to one example embodiment, if there are outstanding updates inthe queue, the scheduled flush is used to determine the next time whendata corresponding to the pending updates will be sent from the gateway.As mentioned earlier, rather than checking the number of outstandingupdates in the queue, a rate at which updates are received at a gatewaymay be measured, and the high update rate may also trigger the use ofthe flush counter. If the number of updates or the update rate is belowa threshold, the gateway may process the updates in the normal manner,with data from each processed update getting independently sent to theclient terminal, as shown at 414, and the method 400 continuing at 402.

In this example embodiment, referring back to 412, if the number ofoutstanding updates is greater than zero, at step 416, it is determinedif the scheduled flush has been reached. If not, the market update maybe coalesced or temporarily stored, as shown at 418, and the methodcontinues at 402. If the loop counter associated with the update reachesthe scheduled flush counter, at 420, the received market update may becoalesced with already stored updates, and data from one or more storedmarket updates may be sent from the gateway. According to one exampleembodiment, there could be two types of updates that are sent to theclient terminal. The first update may include depth related data, andthe second update may include inside market related information andtrades that were received between the last flush and the current flush.It should be understood that since the coalescing is performed betweeneach instance of sending the updates to the client terminal, the depthrelated update would include the most recent depth data, and the insidemarket related update would include the most recent best bid/ask pricesand the most recent best bid/ask quantities. Additionally, in oneexample embodiment, the trades could be sent in the inside marketupdate. However, it should be understood that a separate updateincluding trade related data could be sent as well depending on thesystem configuration.

B. Data Processing Examples—Single Data Stream

FIG. 5 is a block diagram 500 illustrating one example operation of thesystem for controlled market data delivery for an input streamcorresponding to a single tradeable object. In this example, it will beassumed that a trade related update triggers the flush after 5 updatesare processed, an inside market update triggers the flush after 10updates are processed, and a depth related update triggers the flushafter 20 updates. It should be understood that different values couldalso be used based on the system administrator's preferences.Additionally, it will be assumed that when the first update is to beprocessed in the queue, a predefined threshold, such as a predefinednumber of updates pending in the queue, is exceeded and the examplemethod for controlled market data delivery is activated.

Referring now to FIG. 5, as each update is received from an input stream502 and placed in a queue at a gateway, the update may be assigned acounter value, here a Loop ID 504. The assignment of the counter valuecan occur either at the time the update is placed in the queue or at thetime when the update is processed. It is assumed that the updates shownin relation to the input stream 502 are the currently pending updates ina queue at a gateway. Also, it is assumed that the current number ofupdates exceeds the processing capacity of the gateway so that theexample methods for prioritized data delivery are activated.

The first update to be processed from the input stream is a market depthupdate 506 that is assigned a Loop ID of 1. As the market depth update(‘D’) 506 matches one of the pre-defined triggers, a queue flush isscheduled. Since a market depth update triggers a flush after 20updates, when the update 506 is processed, a queue flush is scheduled tooccur at the Loop ID of 21, as shown at 508. Since the second update isyet another depth update, no change to the scheduled flush is made. Asmentioned earlier, the scheduled flush may be modified when a higherpriority update is detected once the flush is scheduled. A higherpriority update compared to a market depth update, as defined in theexamples provided herein, is either an inside market update or a traderelated update. Thus, when an update (‘I’) 510 that corresponds to aninside market is detected and processed, the counter for the queue flushis modified as shown at 512, and the new queue flush is scheduled to nowoccur after 10 updates, i.e., in this example, when the Loop ID reaches13, as shown at 512. Finally, the next higher priority update occurs atthe Loop ID of 12 when an update (‘T’) 514 containing trade data isprocessed. Since a trade related update is a higher priority updatecompared to an inside market update, the scheduled flush is once againmodified to now occur 5 updates after the Loop ID of 12 corresponding tothe trade update 514, i.e., at the Loop ID count of 17, as shown at 516.

In the embodiment shown in FIG. 5, the highest priority update controlsthe flush counter even if it means extending the time until the nextflush occurs. Such an embodiment may be preferred by some systemadministrators as it lowers the number of packets that are sent out froma gateway, as more updates will be coalesced or yet combined into asingle packet. Additionally, it may be preferred to send as many highestpriority messages in the same packet as possible. Often, the highpriority message may signal the start of a batch of other high prioritymessages. Thus, extending the flush, as the described herein may bebeneficial and may result in fewer packets with more up to date databeing sent to client devices.

However, different embodiments could be used as well. For example, thesystem could be programmed such that a higher priority update could onlydecrease the Loop ID of the scheduled flush. In such an embodiment, inthe example provided in FIG. 5, the flush would occur at the Loop ID of13, rather than extending the time until the next flush.

In a normal gateway configuration, it takes much less time to processeach update as compared to sending data from a gateway due to hardwarelimitations, etc., as explained earlier. Thus, the first embodiment thatinvolves processing more updates and creating fewer packets may be morebeneficial and may result in more up to date data being received at aclient terminal. As an example, assuming that it takes 10 microsecondsto process each update and 1 millisecond to send data to a clientterminal, in the embodiment shown in FIG. 5, it would take 1.17milliseconds to process 17 updates and to send the data to a clientterminal. More specifically, it would take 0.17 ms to process 17updates, i.e., 17 updates times 0.01 ms (10 μs), and it would take anadditional 1 ms to send the data, thus, resulting in the total time of1.17 ms. Now, according to the second embodiment for setting a flush,assuming that a flush would occur at the Loop ID of 13, and the nextupdate would result in the flush at the Loop ID of 19 as the tradeupdate at 14 would set the flush to the Loop ID 19, it would take thesystem additional 1.05 milliseconds to send data corresponding to thetotal of 19 updates vs. 17 updates. Thus, as explained earlier and inrelation to this specific example, it might be beneficial to extend thetime until the next flush as in the first embodiment shown above.

C. Data Processing Examples—Multiple Data Streams

While the example in FIG. 5 was described in relation to a single streamof data corresponding to a tradeable object, a typical gateway mayreceive updates for many more tradeable objects, often in the order ofhundreds or thousands. FIG. 6 is a block diagram 600 illustrating oneexample operation of the system for a controlled market data deliverywhen two input streams are received at a gateway. It should beunderstood that the illustrated example could be easily extended to morethan two input streams, and the example embodiments are not limited toany specific number of input streams.

Similarly to the example in FIG. 5, a trade related update in FIG. 6will result in triggering a queue flush after the loop count of 5, aninside market related update will trigger a queue flush after the loopcount of 10, and the market depth update will trigger a queue flushafter the loop count of 20. It should be understood that different loopcounts could also be used in relation to each update type. Also, whilethe same loop count will be used in relation to data corresponding toupdates of both tradeable objects, it should be understood thatdifferent settings could be used for each tradeable object.

Referring to FIG. 6, there are shown two input streams, with the firstinput stream 602 corresponding to a first tradeable object, and thesecond input stream 604 corresponding to a second tradeable object. Asupdates corresponding to each tradeable object are received at agateway, they are placed in a queue and as each of them gets processed,a Loop ID as shown at 606 is assigned to each update.

As shown in FIG. 6, the first update in the queue with the Loop ID of 1is a market depth update 608 corresponding to the first tradeableobject. As the market depth update 608 is one of the predefinedtriggers, a queue flush may be scheduled. Since a market depth updatetype is assigned to correspond to a count of 20, the update 608 triggersa queue flush to be scheduled at the Loop ID of 21, as shown at 610. Thesecond update 612 in the queue is a market depth update corresponding tothe second tradeable object. As both data streams are placed in the samedata queue, the flush counter for each tradeable object may use the sameseries of Loop IDs to be used as reference points for the flushes. Thus,when the market depth update 612 for the second tradeable object isreceived, the flush for data corresponding to the second tradeableobject may be scheduled at the Loop ID of 22, as shown at 614.

As the gateway continues processing updates in the queue, the thirdupdate with the Loop ID of 3 corresponds to an inside market update 616for the first tradeable object. As the inside market update 616 is ahigher priority update compared to the update 608, the scheduled flushfor the first tradeable object is modified to now correspond to the LoopID of 13, as shown at 618. The next updates corresponding to Loop IDs4-6 are lower or the same priority compared to the updates that wereused to set the flushes for each tradeable object, thus, no changes aremade to the scheduled flushes, and the processed update are simplycoalesced with the previous updates.

An update corresponding to the Loop ID of 7 is a trade related update620 for the second tradeable object. Because a trade related update isof a higher priority than a market depth update, the update 620overwrites the initial flush, and the new flush is scheduled for thesecond tradeable object based on the update counter of 5 assigned totrade updates. Thus, as shown in FIG. 6 at 622, the flush for the secondtradeable object is now modified to occur at the Loop ID of 12. As theLoop ID reaches “12,” the updates corresponding to the second tradeableobject are sent out from the gateway, as shown at 624. As explained inrelation to FIG. 5, the data may be sent in a first packet includinginside market data and trade information, and a second packet includingmarket depth data received for the second tradeable object. Also, thepackets that are sent from the gateway include the most up to dateinformation, as the data from each update gets coalesced when eachupdate is processed.

Also, the Loop ID of 12 corresponds to a trade update 626 and overwritesthe queue flush that was scheduled for the first tradeable object. Basedon the update 626, the queue flush for the first tradeable object ismodified to now correspond to the Loop ID of 17, i.e., five updatesfollowing the trade update 626, as shown at 628. As the next update atthe Loop ID of 13 is another trade update for the first tradeableobject, i.e., the update has the same priority level as the one that wasused to set the flush, the update is processed and the scheduled queueflush for the first tradeable object remains unchanged.

The next update 630 is an inside market related update corresponding tothe second tradeable object. Since the update 630 is the first updateafter the last queue flush, the update 630 is used to schedule anotherqueue flush, as shown at 632. Since the update 630 relates to the insidemarket, the queue flush is scheduled after 10 counts, at the Loop ID of24. When an update at the Loop ID of 17 corresponding to the scheduledflush for the first tradeable object is reached, the data correspondingto the first tradeable object is sent from the gateway, as shown at 634.Then, when the next update 638 corresponding to the first tradeableobject is received at the Loop ID of 19, a new flush is scheduled, asshown at 638. The next update at the Loop ID of 20 is a trade relatedupdate 640 corresponding to the second tradeable object. Since the flushfor the second tradeable object was scheduled based on the inside marketupdate 630, and the update 640 is a higher priority update, the flushfor the second tradeable object is modified to now correspond to theLoop ID of 25, as shown at 642. As the gateway continues processingupdates in the queue and reaches an update at the Loop ID of 24, datacorresponding to the first tradeable object is sent from the gateway, asshown at 644. Then, the next Loop ID of 25 triggers transmission of datacorresponding to the second tradeable object to be sent from thegateway, as shown at 646.

FIG. 7 is a block diagram 700 illustrating one example operation of thesystem for a controlled market data delivery when two input streams arereceived at a gateway and where the gateway runs out of updates to beprocessed in a queue.

Similarly to FIG. 6, the block diagram 700 illustrates two input streams702 and 704 corresponding to two tradeable objects. As each update isplaced in a queue, a Loop ID is assigned to the updates, as shown at706.

The first update in the queue with the Loop ID of 1 is a depth update708 corresponding to the first input stream, and thus, a queue flush atthe Loop ID of 21 is scheduled, as shown at 710. The second update withthe Loop ID of 2 is a market depth update 712 that corresponds to thesecond input stream, and thus it triggers a flush at the Loop ID of 22,as shown at 714. As the gateway continues processing updates in thequeue, the third update 716 is an inside market related update relatedto the first tradeable object, and because it is of a higher prioritythan the update 708 that was used to schedule the flush 710, the update716 triggers the modification of the scheduled flush, as shown at 718.The next few updates corresponding to the Loop IDs 4-6 are lower or thesame priority as the updates that were used to set the flushes, thus nochanges are made to the scheduled flushes, and data in the updates iscoalesced with data from previous updates.

An update corresponding to the Loop ID of 7 is an inside market relatedupdate 720 for the second tradeable object. Because an inside marketrelated update is of a higher priority than a market depth update, thescheduled flush for the first tradeable object is modified and now isset to the Loop ID of 17, as shown at 722. The next few updatescorresponding to the Loop IDs of 8-11 are of the lower or the samepriority as the updates that were used to schedule the flushes, thus nochanges are made. However, as the gateway processes the update at theLoop ID 11, and the Loop ID is updated to 12, it is determined thatthere is no additional update pending for processing in the queue, asshown in FIG. 7 at 724. Upon detecting no pending update for processingat the Loop ID 12, market update data corresponding to the firstavailable scheduled flush, in this example, market data corresponding tothe input stream 702 and the scheduled flush 718, is sent out from thegateway one Loop ID sooner than it was scheduled for, as shown at 726.Then, when the Loop ID is incremented to the Loop ID of 13, once againit is determined that there is no update pending in the queue forprocessing, as shown in FIG. 7 at 728. Upon detecting no update, datacorresponding to the next available scheduled flush is sent out from thegateway. In this example, data corresponding to the second input stream704 associated with the scheduled flush 722 is sent out from thegateway, as shown at 730. It should be understood that the process couldbe easily applied in relation to a larger number of input streams thanthe two illustrated in FIG. 7. As explained earlier, sending updatestakes significantly longer as compared to processing each pendingupdate. That means that performing a flush could give an input streamenough time to supply a new update. Rechecking the queue for a newupdate each time the Loop ID is incremented, this method ensures thatthe inbound data has priority over the empty queue flush mechanism. Forexample, if an update was detected at the Loop ID 13, the update wouldget processed as any other update in the input stream. Then, if noupdate was detected at the Loop ID 14, the empty queue flush mechanismwould be activated again.

It will be apparent to those of ordinary skill in the art that themethods described above may be embodied in a computer program productthat includes one or more computer readable media. For example, acomputer readable medium can include a readable memory device, such as ahard drive device, a CD-ROM, a DVD-ROM, or a computer diskette, havingcomputer readable program code segments stored thereon. The computerreadable medium can also include a communications or transmissionmedium, such as, a bus or a communication link, either optical, wired orwireless having program code segments carried thereon as digital oranalog data signals.

The claims should not be read as limited to the described order orelements unless stated to that effect. Therefore, all embodiments thatcome within the scope and spirit of the following claims and equivalentsthereto are claimed as the invention.

What is claimed:
 1. A method for controlled market data delivery in anelectronic trading environment, comprising: receiving at a networkdevice a plurality of market updates comprising at least one of a priceupdate, a quantity update, and a trade update corresponding to orders inan order book at an electronic exchange, wherein the trade updatecorresponds to an order executed the electronic exchange, the electronicexchange comprising a computerized matching process for automaticallymatching electronic bids and offers for a tradeable object received froma plurality of trading stations; placing the plurality of market updatesin a queue at the network device, wherein the queue is arranged toreceive and store market updates from the electronic exchange;determining by the network device a first update type corresponding to afirst market update of the plurality of market updates in the queue, thefirst update type being determined based on at least one of a priceupdate and a quantity update in the first market update; based ondetermination of the first update type, setting by a queue flushscheduler of the network device a first number of market updates to beprocessed in the queue before any market information from the pluralityof market updates is sent from the network device to receiving tradingstations; based on the first number of market updates to be processed,scheduling by the queue flush scheduler a data flush by setting adata-flush counter value to the first number of market updates;coalescing, by a coalescing component of the network device, the marketinformation from the first number of market updates to generate acoalesced market update, wherein coalescing comprises overwriting atleast a first value corresponding to a price or a quantity in a firstmarket update with a second value corresponding to the price or thequantity in a subsequent market update of the first number of updates;in response to coalescing the first number of market updates, detectingthat the data-flush counter value has been reached; and in response todetecting that the data-flush counter value has been reached, sendingthe coalesced market update from the network device to the receivingtrading stations.
 2. The method of claim 1, wherein the first number ofmarket updates is set after detecting that a market update threshold hasbeen exceeded.
 3. The method of claim 2, wherein the market updatethreshold comprises a number of market updates pending in the queue. 4.The method of claim 2, wherein the market update threshold comprises arate at which market updates are received at the network device andplaced in the queue.
 5. The method of claim 1, wherein the first marketupdate comprises an inside market update.
 6. The method of claim 1,wherein the first market update comprises a depth update.
 7. The methodof claim 1, wherein the first market update comprises a trade update. 8.A method for controlled market data delivery in an electronic tradingenvironment, comprising: receiving at a network device a plurality ofmarket updates comprising at least one of a price update, a quantityupdate, and a trade update corresponding to orders in an order book atan electronic exchange, wherein the trade update corresponds to an orderexecuted at the electronic exchange, the electronic exchange comprisinga computerized matching process for automatically matching electronicbids and offers for a tradeable object received from a plurality oftrading stations; placing the plurality of market updates in a queue atthe network device, wherein the queue is arranged to receive and storemarket updates from the electronic exchange; determining by the networkdevice a first update type corresponding to a first market update of theplurality of market updates in the queue, the first update type beingdetermined based on at least one of a price update and a quantity updatein the first market update; based on the determination of the firstupdate type, setting by a queue flush scheduler of the network device adata-flush counter value equal to a first number of market updates to beprocessed in the queue before any market information from the pluralityof market updates is sent from the network device to receiving tradingstations; scheduling by the queue flush scheduler a data flush based onthe data-flush counter value; coalescing by a coalescing component ofthe network device the market information in the first number of marketupdates to generate a coalesced market update, wherein coalescingcomprises overwriting at least a first value corresponding to a price ora quantity in a first market update with a second value corresponding tothe price or the quantity in a subsequent market update of the firstnumber of updates; while coalescing the market information correspondingto the first number of market updates in the queue, determining by thenetwork device a second update type corresponding to a second marketupdate, the second update type being determined based on at least one ofa price update and a quantity update in the second market update,wherein the second update type is different than the first update type;based on the second update type, changing by the queue flush schedulerof the network device the data-flush counter value to be equal to asecond number of market updates to be processed in the queue before anymarket information from the plurality of market updates is sent from thenetwork device to the receiving trading stations; scheduling by thequeue flush scheduler the data flush based on the changed data-flushcounter value; and sending the coalesced market update from the networkdevice to the receiving trading stations when the number of marketupdates coalesced is equal to the changed data-flush counter value. 9.The method of claim 8, wherein the first number of market updates is setafter detecting that a market update threshold has been exceeded. 10.The method of claim 9, wherein the market update threshold comprises anumber of market updates pending in the queue.
 11. The method of claim9, wherein the market update threshold comprises a rate at which marketupdates are received at the network device and placed in the queue. 12.The method of claim 8, wherein the first update type is of a lowerpriority than the second update type, and wherein the second number isless than the first number.
 13. The method of claim 8, wherein thesecond number is greater than the first number.
 14. The method of claim8, wherein sending the coalesced market update data comprises sendingthe coalesced market update from a gateway to the receiving tradingstations.
 15. The method of claim 8, wherein the first market updatecomprises an inside market related update.
 16. The method of claim 8,wherein the first market update comprises a market depth update.
 17. Themethod of claim 8, wherein the first market update comprises a tradeupdate.
 18. The method of claim 8, wherein the second number is lessthan the first number.
 19. The method of claim 1, wherein the pluralityof market updates further comprises a plurality of quantities pending atan inside market price, and wherein coalescing further comprisesoverwriting at least a first quantity corresponding to the inside marketprice with a second quantity corresponding to the inside market price togenerate the coalesced market update.
 20. The method of claim 1, whereinthe plurality of market updates further comprises a plurality ofquantities at a price other than an inside market price, and whereincoalescing further comprises overwriting at least a first quantity atthe price with a second quantity at the price to generate the coalescedmarket update.
 21. The method of claim 1, wherein the plurality ofmarket updates further comprises trade price data, and whereincoalescing comprises overwriting at least a first trade price with asecond trade price to generate the coalesced market update.
 22. Themethod of claim 8, wherein the plurality of market updates furthercomprises a plurality of quantities at an inside market price, andwherein coalescing further comprises overwriting at least a firstquantity corresponding to the inside market price with a second quantitycorresponding to the inside market price to generate the coalescedmarket update.
 23. The method of claim 8, wherein the plurality ofmarket updates further comprises a plurality of quantities at a priceother than an inside market price, and wherein coalescing furthercomprises overwriting at least a first quantity at the price with asecond quantity at the price to generate the coalesced market update.24. The method of claim 8, wherein the plurality of market updatesfurther comprises trade price data, and wherein coalescing comprisesoverwriting at least a first trade price with a second trade price togenerate the coalesced market update.
 25. The method of claim 1, whereinthe plurality of market updates comprises a plurality of inside marketprices, and wherein coalescing comprises overwriting a first insidemarket price with a second inside market price.
 26. The method of claim8, wherein the plurality of market updates comprises a plurality ofinside market prices, and wherein coalescing comprises overwriting afirst inside market price with a second inside market price.